/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * GuiDadosVeiculo.java
 *
 * Created on 22/11/2011, 20:56:20
 */
package view.gui;

import controller.ControllerTipoVeiculo;
import controller.ControllerVeiculo;
import java.util.List;
import javax.swing.JOptionPane;
import model.dominio.TipoVeiculo;
import model.dominio.Veiculo;

/**
 *
 * @author Braulio
 * Classe responsável pelo tratamento de dados de Veículo.
 * Estes dados são referentes ao Cadastro e à Edição de Veículo.
 */
public class GuiDadosVeiculo  extends JInternalFramePermissao {

    private Veiculo veiculo;

    /** Creates new form GuiDadosVeiculo */
    /**
     * Construtor da interface gráfica para Cadastro de Veículo.
     * Disponibiliza uma Lista de Veículos previamente cadastrado no banco de dados.
     */
    public GuiDadosVeiculo() {
        initComponents();
        List<TipoVeiculo> lista = ControllerTipoVeiculo.buscaListaTipos();
        for (TipoVeiculo tipo : lista) {
            comboTipo.addItem(tipo);
        }
        veiculo = new Veiculo();
    }

    /**
     * Construtor da interface gráfica para Edição de Veículo.
     * Permite edição completa, desde o Tipo de Veículo até os opcionais.
     * @param v 
     * Objeto da Classe Veículos, instanciado na busca por outros objetos no banco de dados.
     */
    public GuiDadosVeiculo(Veiculo v) {
        initComponents();
        List<TipoVeiculo> lista = ControllerTipoVeiculo.buscaListaTipos();
        for (TipoVeiculo tipo : lista) {
            comboTipo.addItem(tipo);
        }
        veiculo = v;
        boxMarca.setText(veiculo.getMarca());
        boxModelo.setText(veiculo.getModelo());
        boxPlaca.setText(veiculo.getPlaca());
        areaObs.setText(veiculo.getObservacoes());
        comboCor.setSelectedItem(veiculo.getCor());
        comboTipo.setSelectedItem(veiculo.getTipo());

        a.setSelected(veiculo.getOpcionais().charAt(0) == '1' ? true : false);
        b.setSelected(veiculo.getOpcionais().charAt(1) == '1' ? true : false);
        c.setSelected(veiculo.getOpcionais().charAt(2) == '1' ? true : false);
        d.setSelected(veiculo.getOpcionais().charAt(3) == '1' ? true : false);
        e.setSelected(veiculo.getOpcionais().charAt(4) == '1' ? true : false);
        f.setSelected(veiculo.getOpcionais().charAt(5) == '1' ? true : false);
        g.setSelected(veiculo.getOpcionais().charAt(6) == '1' ? true : false);
        h.setSelected(veiculo.getOpcionais().charAt(7) == '1' ? true : false);
        this.setTitle("Editar veículo");
        jButton1.setText("Editar");
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        boxMarca = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        boxModelo = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        comboCor = new javax.swing.JComboBox();
        comboTipo = new javax.swing.JComboBox();
        jPanel2 = new javax.swing.JPanel();
        a = new javax.swing.JCheckBox();
        b = new javax.swing.JCheckBox();
        c = new javax.swing.JCheckBox();
        d = new javax.swing.JCheckBox();
        e = new javax.swing.JCheckBox();
        f = new javax.swing.JCheckBox();
        g = new javax.swing.JCheckBox();
        h = new javax.swing.JCheckBox();
        jScrollPane1 = new javax.swing.JScrollPane();
        areaObs = new javax.swing.JTextArea();
        boxPlaca = new javax.swing.JFormattedTextField();
        jButton1 = new javax.swing.JButton();
        Cancelar = new javax.swing.JButton();

        setClosable(true);
        setTitle("Cadastrar veículo");
        addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
            public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameActivated(evt);
            }
            public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
            }
        });
        getContentPane().setLayout(null);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Informações Veículo"));
        jPanel1.setLayout(null);

        jLabel1.setText("Marca*:");
        jPanel1.add(jLabel1);
        jLabel1.setBounds(20, 30, 60, 30);

        boxMarca.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                boxMarcaActionPerformed(evt);
            }
        });
        jPanel1.add(boxMarca);
        boxMarca.setBounds(90, 30, 310, 30);

        jLabel2.setText("Placa*:");
        jPanel1.add(jLabel2);
        jLabel2.setBounds(20, 70, 60, 30);

        boxModelo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                boxModeloActionPerformed(evt);
            }
        });
        jPanel1.add(boxModelo);
        boxModelo.setBounds(90, 110, 310, 30);

        jLabel3.setText("Modelo*:");
        jPanel1.add(jLabel3);
        jLabel3.setBounds(20, 110, 60, 30);

        jLabel4.setText("Tipo*:");
        jPanel1.add(jLabel4);
        jLabel4.setBounds(20, 150, 50, 30);

        jLabel6.setText("Observações:");
        jPanel1.add(jLabel6);
        jLabel6.setBounds(20, 230, 90, 30);

        jLabel7.setText("Cor:");
        jPanel1.add(jLabel7);
        jLabel7.setBounds(20, 190, 50, 30);

        comboCor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Selecione a Cor", "Amarelo", "Azul", "Branco", "Cinza", "Fosco", "Prata", "Preto", "Vermelho", "Verde" }));
        comboCor.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                comboCorItemStateChanged(evt);
            }
        });
        comboCor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                comboCorActionPerformed(evt);
            }
        });
        jPanel1.add(comboCor);
        comboCor.setBounds(90, 190, 310, 30);

        comboTipo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Selecione o tipo de veículo" }));
        jPanel1.add(comboTipo);
        comboTipo.setBounds(90, 150, 310, 30);

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Opcionais"));
        jPanel2.setLayout(null);

        a.setText("Direção Hidráulica");
        jPanel2.add(a);
        a.setBounds(10, 20, 200, 30);

        b.setText("Vidro Elétrico");
        jPanel2.add(b);
        b.setBounds(10, 50, 200, 30);

        c.setText("Freios ABS");
        jPanel2.add(c);
        c.setBounds(10, 80, 200, 30);

        d.setText("Air Bags");
        jPanel2.add(d);
        d.setBounds(220, 20, 150, 30);

        e.setText("Som/MP3/Bluetooth/USB");
        jPanel2.add(e);
        e.setBounds(220, 50, 160, 30);

        f.setText("Controlador de bordo");
        jPanel2.add(f);
        f.setBounds(220, 80, 150, 30);

        g.setText("Travas Elétricas/Alarme");
        jPanel2.add(g);
        g.setBounds(10, 110, 200, 30);

        h.setText("Bancos de couro");
        jPanel2.add(h);
        h.setBounds(220, 110, 160, 30);

        jPanel1.add(jPanel2);
        jPanel2.setBounds(10, 290, 390, 150);

        areaObs.setColumns(20);
        areaObs.setLineWrap(true);
        areaObs.setRows(5);
        jScrollPane1.setViewportView(areaObs);

        jPanel1.add(jScrollPane1);
        jScrollPane1.setBounds(100, 230, 300, 60);

        try {
            boxPlaca.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("AAA-####")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }
        boxPlaca.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                boxPlacaActionPerformed(evt);
            }
        });
        jPanel1.add(boxPlaca);
        boxPlaca.setBounds(90, 70, 310, 30);

        getContentPane().add(jPanel1);
        jPanel1.setBounds(0, 0, 410, 450);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/view/imagens/salvar.png"))); // NOI18N
        jButton1.setText("Cadastrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(20, 460, 140, 60);

        Cancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/view/imagens/cancelar.png"))); // NOI18N
        Cancelar.setText("Cancelar");
        Cancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CancelarActionPerformed(evt);
            }
        });
        getContentPane().add(Cancelar);
        Cancelar.setBounds(220, 460, 150, 60);

        setBounds(0, 0, 421, 571);
    }// </editor-fold>//GEN-END:initComponents

    /**
     * @see ControllerVeiculo
     * 
     * Função responsável  cadastrar o Veículo no banco de dados.
     */
    private void guardar() {
        if (boxMarca.getText().isEmpty() || boxModelo.getText().isEmpty() || boxPlaca.getText().equals("   -    ")) {
            JOptionPane.showMessageDialog(null, "Campo(s) obrigatório(s) não preenchido(s)!", "ERRO!", JOptionPane.ERROR_MESSAGE);
            return;
        }
        if (comboTipo.getSelectedItem().equals("Selecione o tipo de veículo")) {
            JOptionPane.showMessageDialog(null, "Você não selecionou o tipo do veículo!", "ERRO!", JOptionPane.ERROR_MESSAGE);
            return;
        }
        
        String opcionais = "";
        opcionais += (a.isSelected() ? "1" : "0");
        opcionais += (b.isSelected() ? "1" : "0");
        opcionais += (c.isSelected() ? "1" : "0");
        opcionais += (d.isSelected() ? "1" : "0");
        opcionais += (e.isSelected() ? "1" : "0");
        opcionais += (f.isSelected() ? "1" : "0");
        opcionais += (g.isSelected() ? "1" : "0");
        opcionais += (h.isSelected() ? "1" : "0");


        TipoVeiculo tipo = (TipoVeiculo) comboTipo.getSelectedItem();

        veiculo.setMarca(boxMarca.getText());
        veiculo.setPlaca(boxPlaca.getText());
        veiculo.setModelo(boxModelo.getText());
        veiculo.setTipo(tipo);
        veiculo.setOpcionais(opcionais);
        veiculo.setCor(comboCor.getSelectedItem().toString().equals("Selecione a Cor") ? "-" : comboCor.getSelectedItem().toString());
        veiculo.setObservacoes(areaObs.getText());
        if(ControllerVeiculo.salvar(veiculo)){
            JOptionPane.showMessageDialog(null, "Dados salvos com sucesso!", "Salvar Veículo", JOptionPane.INFORMATION_MESSAGE);
        } else {
            JOptionPane.showMessageDialog(null, "Erro ao salvar dados!", "Salvar Veículo", JOptionPane.ERROR_MESSAGE);
        }
        this.dispose();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        guardar();
    }//GEN-LAST:event_jButton1ActionPerformed

    private void CancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CancelarActionPerformed
        this.dispose();
}//GEN-LAST:event_CancelarActionPerformed

    private void comboCorItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_comboCorItemStateChanged
    }//GEN-LAST:event_comboCorItemStateChanged

    private void comboCorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboCorActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_comboCorActionPerformed

    private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameActivated
    }//GEN-LAST:event_formInternalFrameActivated

    private void boxMarcaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_boxMarcaActionPerformed
        guardar();
    }//GEN-LAST:event_boxMarcaActionPerformed

    private void boxPlacaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_boxPlacaActionPerformed
        guardar();
    }//GEN-LAST:event_boxPlacaActionPerformed

    private void boxModeloActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_boxModeloActionPerformed
        guardar();
    }//GEN-LAST:event_boxModeloActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton Cancelar;
    private javax.swing.JCheckBox a;
    private javax.swing.JTextArea areaObs;
    private javax.swing.JCheckBox b;
    private javax.swing.JTextField boxMarca;
    private javax.swing.JTextField boxModelo;
    private javax.swing.JFormattedTextField boxPlaca;
    private javax.swing.JCheckBox c;
    private javax.swing.JComboBox comboCor;
    private javax.swing.JComboBox comboTipo;
    private javax.swing.JCheckBox d;
    private javax.swing.JCheckBox e;
    private javax.swing.JCheckBox f;
    private javax.swing.JCheckBox g;
    private javax.swing.JCheckBox h;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration//GEN-END:variables

    @Override
    public int getPermissao() {
        if(veiculo.getCodigo()>0){
            return 13;
        }else{
            return 12;
        }
    }
}
